// let obj = {
//     name: "张三",
// }
// //
// let m = new Map()
// //
// //
// // let timout = (m, obj) => {
// //
// // }
// //
// // setTimeout(timeout, 1000)
//
// m.set(obj, setTimeout(function () {
//     // 2S之后删除k.
//     f(m, obj)
// }, 2000))
//
// let f = (m, obj) => {
//     console.log(obj)
//     obj.name = "李四"
//     m.delete(obj)
// }
//
//
// let c = (m, obj) => {
//     console.log("遍历K。")
//     console.log(obj)
//     for (let k of m.keys()) {
//         console.log("key: " + k)
//     }
// }
//
// setTimeout(() => {
//     c(m, obj)
//
// }, 5000)

// 自己的封装一个Timeout.


let Timeout = (callBack, m, data, time) => {
    setTimeout(() => {
        callBack(m, data)
    }, time)
}

let f = function (arg) {
    console.log(arg)
}


let o = {
    name: "张三",
}

let m = new Map()

m.set(o, Timeout((m, obj) => {
    // 本次需要执行的操作.
    console.log(obj)
    obj.name = "李四"
    // 3S之后删除.
    m.delete(obj)
}, m, o, 3000))

setTimeout(() => {
    console.log(o)
    // 查看下key是否存在.
    for (let k of m.keys()) {
        console.log("k : " + k)
    }
}, 5000)

o = null
